package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 保养维护工单对象 ac_work_order
 *
 * @author ruoyi
 * @date 2025-03-06
 */
public class AcWorkOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 工单ID，主键，自增 */
    private Long id;

    /** 关联资产ID，外键关联资产表 */
    @Excel(name = "关联资产ID，外键关联资产表")
    private Long assetId;

    /** 资产编号，资产的唯一编号 */
    @Excel(name = "资产编号，资产的唯一编号")
    private String assetNumber;

    /** 紧急程度，枚举类型：低、中、高 */
    @Excel(name = "紧急程度，枚举类型：低、中、高")
    private String urgencyLevel;

    /** 工单方式，枚举类型：电话、邮件、系统 */
    @Excel(name = "工单方式，枚举类型：电话、邮件、系统")
    private String workOrderMethod;

    /** 工单类型，枚举类型：保养维护工单、巡检工单 */
    @Excel(name = "工单类型，枚举类型：保养维护工单、巡检工单")
    private String workOrderType;

    @Excel(name = "工单服务类型，枚举类型：保养维护工单、巡检工单")
    private String workOrderCategory;

    /** 工单状态，枚举类型：待派单、已派单、处理中、已完成、已取消 */
    @Excel(name = "工单状态，枚举类型：待派单、已派单、处理中、已完成、已取消")
    private String workOrderStatus;

    /** 问题描述，工单的具体问题描述 */
    @Excel(name = "问题描述，工单的具体问题描述")
    private String problemDescription;

    /** 严重程度，枚举类型：轻微、一般、严重 */
    @Excel(name = "严重程度，枚举类型：轻微、一般、严重")
    private String severityLevel;

    /** 分配人员，存储分配的人员姓名或ID */
    @Excel(name = "分配人员，存储分配的人员姓名或ID")
    private String assignedPersonnel;

    /** 派单时间，工单派发给人员的时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "派单时间，工单派发给人员的时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dispatchTime;

    /** 上门时间，预计上门服务的时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "上门时间，预计上门服务的时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date onsiteTime;

    /** 现场联系人，现场对接人姓名 */
    @Excel(name = "现场联系人，现场对接人姓名")
    private String onsiteContact;

    /** 联系电话，现场联系人的电话 */
    @Excel(name = "联系电话，现场联系人的电话")
    private String contactNumber;

    /** 备注，工单的附加说明 */
    @Excel(name = "备注，工单的附加说明")
    private String notes;

    /** 图片，存储工单相关图片的路径或URL，使用JSON格式 */
    @Excel(name = "图片，存储工单相关图片的路径或URL，使用JSON格式")
    private String images;

    /** 创建时间，工单创建的时间戳 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间，工单创建的时间戳", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间，工单最后更新的时间戳 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间，工单最后更新的时间戳", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    private String processingDuration;
    private String materialsUsed;
    private String workerRemark;
    private String workerImages;


    public String getProcessingDuration() {
        return processingDuration;
    }

    public void setProcessingDuration(String processingDuration) {
        this.processingDuration = processingDuration;
    }

    public String getMaterialsUsed() {
        return materialsUsed;
    }

    public void setMaterialsUsed(String materialsUsed) {
        this.materialsUsed = materialsUsed;
    }

    public String getWorkerRemark() {
        return workerRemark;
    }

    public void setWorkerRemark(String workerRemark) {
        this.workerRemark = workerRemark;
    }

    public String getWorkerImages() {
        return workerImages;
    }

    public void setWorkerImages(String workerImages) {
        this.workerImages = workerImages;
    }

    public String getWorkOrderCategory() {
        return workOrderCategory;
    }

    public void setWorkOrderCategory(String workOrderCategory) {
        this.workOrderCategory = workOrderCategory;
    }

    /** 部门ID */
    @Excel(name = "部门ID")
    private Long deptId;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setAssetId(Long assetId)
    {
        this.assetId = assetId;
    }

    public Long getAssetId()
    {
        return assetId;
    }
    public void setAssetNumber(String assetNumber)
    {
        this.assetNumber = assetNumber;
    }

    public String getAssetNumber()
    {
        return assetNumber;
    }
    public void setUrgencyLevel(String urgencyLevel)
    {
        this.urgencyLevel = urgencyLevel;
    }

    public String getUrgencyLevel()
    {
        return urgencyLevel;
    }
    public void setWorkOrderMethod(String workOrderMethod)
    {
        this.workOrderMethod = workOrderMethod;
    }

    public String getWorkOrderMethod()
    {
        return workOrderMethod;
    }
    public void setWorkOrderType(String workOrderType)
    {
        this.workOrderType = workOrderType;
    }

    public String getWorkOrderType()
    {
        return workOrderType;
    }
    public void setWorkOrderStatus(String workOrderStatus)
    {
        this.workOrderStatus = workOrderStatus;
    }

    public String getWorkOrderStatus()
    {
        return workOrderStatus;
    }
    public void setProblemDescription(String problemDescription)
    {
        this.problemDescription = problemDescription;
    }

    public String getProblemDescription()
    {
        return problemDescription;
    }
    public void setSeverityLevel(String severityLevel)
    {
        this.severityLevel = severityLevel;
    }

    public String getSeverityLevel()
    {
        return severityLevel;
    }
    public void setAssignedPersonnel(String assignedPersonnel)
    {
        this.assignedPersonnel = assignedPersonnel;
    }

    public String getAssignedPersonnel()
    {
        return assignedPersonnel;
    }
    public void setDispatchTime(Date dispatchTime)
    {
        this.dispatchTime = dispatchTime;
    }

    public Date getDispatchTime()
    {
        return dispatchTime;
    }
    public void setOnsiteTime(Date onsiteTime)
    {
        this.onsiteTime = onsiteTime;
    }

    public Date getOnsiteTime()
    {
        return onsiteTime;
    }
    public void setOnsiteContact(String onsiteContact)
    {
        this.onsiteContact = onsiteContact;
    }

    public String getOnsiteContact()
    {
        return onsiteContact;
    }
    public void setContactNumber(String contactNumber)
    {
        this.contactNumber = contactNumber;
    }

    public String getContactNumber()
    {
        return contactNumber;
    }
    public void setNotes(String notes)
    {
        this.notes = notes;
    }

    public String getNotes()
    {
        return notes;
    }
    public void setImages(String images)
    {
        this.images = images;
    }

    public String getImages()
    {
        return images;
    }
    public void setCreatedAt(Date createdAt)
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt()
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt)
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt()
    {
        return updatedAt;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("assetId", getAssetId())
                .append("assetNumber", getAssetNumber())
                .append("urgencyLevel", getUrgencyLevel())
                .append("workOrderMethod", getWorkOrderMethod())
                .append("workOrderType", getWorkOrderType())
                .append("workOrderStatus", getWorkOrderStatus())
                .append("problemDescription", getProblemDescription())
                .append("severityLevel", getSeverityLevel())
                .append("assignedPersonnel", getAssignedPersonnel())
                .append("dispatchTime", getDispatchTime())
                .append("onsiteTime", getOnsiteTime())
                .append("onsiteContact", getOnsiteContact())
                .append("contactNumber", getContactNumber())
                .append("notes", getNotes())
                .append("images", getImages())
                .append("createdAt", getCreatedAt())
                .append("updatedAt", getUpdatedAt())
                .append("delFlag", getDelFlag())
                .append("deptId", getDeptId())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
